package lintulaskenta.entity;



import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

/*
 * Lajihavainto on jollakin pisteellä (pistevuotena) tehty yksittäisestä
 * lintulajista tehty PARIHAVAINTO sekä tietyn säteen sisä- että ulkopuolelta.
 */

@Entity
public class Lajihavainto implements Serializable{


    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long lajihavaintoId;
    @ManyToOne(cascade = CascadeType.MERGE)
    @JoinColumn
    private Pistevuosi pistevuosi;    
    @Column
    private int pisteenNumero;
    @Column
    private int parimaaraSisapuolella;
    @Column
    private int parimaaraUlkopuolella;   
    @Column
    private String parvilaji;

    
    public Lajihavainto() {
    }

    public Lajihavainto(Pistevuosi pistevuosi, int pisteenNumero, int parimaaraSisapuolella, int parimaaraUlkopuolella, String parvilaji) {
        this.pistevuosi = pistevuosi;
        this.pisteenNumero = pisteenNumero;
        this.parimaaraSisapuolella = parimaaraSisapuolella;
        this.parimaaraUlkopuolella = parimaaraUlkopuolella;
        this.parvilaji = parvilaji;
    }
    
    public long getLajihavaintoId() {
        return lajihavaintoId;
    }

    public int getParimaaraSisapuolella() {
        return parimaaraSisapuolella;
    }

    public void setParimaaraSisapuolella(int parimaaraSisapuolella) {
        this.parimaaraSisapuolella = parimaaraSisapuolella;
    }

    public int getParimaaraUlkopuolella() {
        return parimaaraUlkopuolella;
    }

    public void setParimaaraUlkopuolella(int parimaaraUlkopuolella) {
        this.parimaaraUlkopuolella = parimaaraUlkopuolella;
    }

    public String getParvilaji() {
        return parvilaji;
    }

    public void setParvilaji(String parvilaji) {
        this.parvilaji = parvilaji;
    }

    public int getPisteenNumero() {
        return pisteenNumero;
    }

    public void setPisteenNumero(int pisteenNumero) {
        this.pisteenNumero = pisteenNumero;
    }

    public Pistevuosi getPistevuosi() {
        return pistevuosi;
        }    

    public void setPistevuosi(Pistevuosi p) {
        if (p != null) {
            this.pistevuosi = p;
            if (!p.getLajihavainnot().contains(this)) {
                p.getLajihavainnot().add(this);
            }
        }
    }
}
